﻿using System;
using System.Collections.Generic;
using System.Text;
using CeA.Reports.Atendimento.DataAccess.Helpers;

namespace CeA.Reports.Atendimento.DataAccess.Criteria {
    public class RankingFilter {
        private List<int> m_rfsList;
        private List<int> m_regiaoList;
        private List<int> m_lojaList;
        private List<int> m_especialistaList;

        private DateTime m_dataInicial;
        private DateTime m_dataFinal;
        private int m_tempoDesistencia;

        private int m_tempoEsperaMaior;
        private int m_tempoAtendimentoMaior;
        private string m_tempoEsperaMaiorFormatado;
        private string m_tempoAtendimentoMaiorFormatado;


        public RankingFilter()                          {
            m_rfsList           = new List<int>();
            m_regiaoList        = new List<int>();
            m_lojaList          = new List<int>();
            m_especialistaList  = new List<int>();
        }
        
        public List<int> RfsList                        {
            get { return m_rfsList; }
            set { m_rfsList = value; }
        }
        
        public List<int> RegiaoList                     {
            get { return m_regiaoList; }
            set { m_regiaoList = value; }
        }
        
        public List<int> LojaList                       {
            get { return m_lojaList; }
            set { m_lojaList = value; }
        }
        
        public List<int> EspecialistaList               {
            get { return m_especialistaList; }
            set { m_especialistaList = value; }
        }

        public DateTime DataInicial                     {
            get { return m_dataInicial; }
            set { m_dataInicial = value; }
        }

        public DateTime DataFinal                       {
            get { return m_dataFinal; }
            set { m_dataFinal = value; }
        }

        public int TempoDesistencia                     {
            get { return m_tempoDesistencia; }
            set { m_tempoDesistencia = value; }
        }

        public int TempoEsperaMaior                     {
            get { return m_tempoEsperaMaior; }
            set {
                m_tempoEsperaMaior = value;
                m_tempoEsperaMaiorFormatado = ConvertHelper.SecondToHour(m_tempoEsperaMaior);
            }
        }

        public int TempoAtendimentoMaior                {
            get { return m_tempoAtendimentoMaior; }
            set {
                m_tempoAtendimentoMaior = value;
                m_tempoAtendimentoMaiorFormatado = ConvertHelper.SecondToHour(m_tempoAtendimentoMaior);
            }
        }

        public string TempoEsperaMaiorFormatado         {
            get { return m_tempoEsperaMaiorFormatado; }
            set {
                m_tempoEsperaMaiorFormatado = value;
                m_tempoEsperaMaior = ConvertHelper.HourToSecond(m_tempoEsperaMaiorFormatado);
            }
        }

        public string TempoAtendimentoMaiorFormatado    {
            get { return m_tempoAtendimentoMaiorFormatado; }
            set {
                m_tempoAtendimentoMaiorFormatado = value;
                m_tempoAtendimentoMaior = ConvertHelper.HourToSecond(m_tempoAtendimentoMaiorFormatado);
            }
        }

        private RankingFilter AddRfs(int id)            {
            m_rfsList.Add(id);
            return this;
        }

        private RankingFilter AddLoja(int id)           {
            m_lojaList.Add(id);
            return this;
        }
        
        private RankingFilter AddRegiao(int id)         {
            m_regiaoList.Add(id);
            return this;
        }

        private RankingFilter AddEspecialista(int id)   {
            m_especialistaList.Add(id);
            return this;
        }
    }
}
